<template>
    <div></div>
</template>

<script>
    import {getUrlParam} from '../../../../common/web/tools/UrlTools.js'

    import IdentifierUserUrl from '../../../../identifier/web/pc/IdentifierUserUrl.js'
    export default {
        components: {
        },
        props:{
            // 后台配置的公众号appCode
            appCode: {
                type: String,
                required: true
            },
            // 登录成功回调
            onSuccess: {
                type: Function,
                default: function () {

                }
            },
            // 登录状态，是否登录
            hasLoginCheck: {
                type: Function,
                default: function () {

                    return false
                }
            },
            // 如果没有登录是否自动微信登录
            autoLoginIfNoneLogin: {
                type: Boolean,
                default: true
            },
          redirectUrl: {
              type: String,
          }
        },
        data() {
            return {
            }
        },
        mounted(){
            this.tryLoginIfCodeExist()
        },

        methods: {
            // 首先签名地址,并跳转到授权页面
            oauth2buildAuthorizationUrlAndGoToAuth(){
                let url = window.location.href
                if(this.redirectUrl){
                  url = this.redirectUrl
                }
                if(window.location.search){
                    url = url.replace(window.location.search,'')
                }
                this.$http.get('/wx/mp/oauth2/' + this.appCode + '/oauth2buildAuthorizationUrl',{params:{url:url}}).then(res=>{
                    let oauth2buildAuthorizationUrl = res.data
                    window.location.href = oauth2buildAuthorizationUrl
                })
            },
            // 重定向回来之后使用code登录
            tryLoginIfCodeExist(){
                // 如果已经登录 不做任何操作
                if(this.hasLoginCheck()){
                    return;
                }

                let code = getUrlParam('code')
                // code不存在，如果需要自动登录那么构建登录地址去授权登录
                if (!code) {
                    if(this.autoLoginIfNoneLogin){
                        this.$http.get(IdentifierUserUrl.hasLogin).catch(error=>{
                            // 未登录
                            if (error.statusCode == 401) {
                                this.oauth2buildAuthorizationUrlAndGoToAuth()
                            }
                        })
                    }
                    return
                }
                // code存在，直接调用登录接口登录
                else{
                  // 如果code已经使用过不再处理
                    let value = this.appCode + code
                    const valueDb = uni.getStorageSync('wxloginCode');
                    if(valueDb && valueDb == value){
                        return
                    }

                    uni.setStorageSync('wxloginCode', value);
                    // 登录接口调用
                    this.$http.post('/wxmp/oauth2/login', 'username='+ this.appCode +'&password=' + code,{
                        header: {"content-type":"application/x-www-form-urlencoded"}
                    }).then(res => {
                        this.onSuccess()
                    })
                }

            }
        }
    };
</script>
